import java.util.HashMap;
import java.util.Map;

/**
 * 904. 水果成篮
 * https://leetcode.cn/problems/fruit-into-baskets/description/
 */
class Solution {
    public int totalFruit(int[] fruits) {
        Map<Integer, Integer> map = new HashMap<>();
        int ret = 0, n = fruits.length;
        for(int left = 0, right = 0; right < n; right++) {
            // 1、进窗口
            map.put(fruits[right], map.getOrDefault(fruits[right], 0) + 1);
            // 2、判断
            while (map.size() > 2) {
                // 出窗口
                int fruit = fruits[left];
                map.put(fruit, map.get(fruits[left]) - 1);
                left++;
                if(map.get(fruit) == 0) map.remove(fruit);
            }
            // 3、更新结果
            ret = Math.max(ret, right - left + 1);
        }
        return ret;
    }
}